package com.tedu.openmedical.file;
import com.tedu.openmedical.base.response.JsonResult;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import java.nio.file.Paths;
import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.UUID;

@RestController
@RequestMapping("/v1/file/")
@Slf4j
public class UploadController {
//    定义方法图片上传功能
    private static final String BASE_UPLOAD_PATH = "medical-web/public/imgs/avatar";
    private static final String PROJECT_ROOT_DIR;
//    获取项目的根目录
    static {
        PROJECT_ROOT_DIR = Paths.get(System.getProperty("user.dir")).toAbsolutePath().toString();
    }
    @PostMapping("/upload")
//    MultipartFile用来接收上传图片对象
//    注意 形参file必须与前端upload上传组件的name一致
    public JsonResult upload(MultipartFile file) throws IOException {
//        原始文件名
        String fileName=file.getOriginalFilename();
//        获取图片后缀
        String suffix=fileName.substring(fileName.lastIndexOf("."));
//        生成一个唯一字符串作为新的文件名
        fileName= UUID.randomUUID()+suffix;
//        为了提高检索性能 可以设置一个自定义的日期路径作为文件夹
        SimpleDateFormat sdf=new SimpleDateFormat("/yyyy-MM-dd/");
        String datePath=sdf.format(new Date());
//   构建完整的文件路径
        String relativePath = datePath + fileName; // 返回给前端的相对路径
        String absolutePath = PROJECT_ROOT_DIR + "/" + BASE_UPLOAD_PATH +"/"+ datePath.substring(1) + fileName; // 实际保存的绝对路径
        log.debug("图片上传成功，图片路径为：{}", absolutePath);
//   创建文件夹如果不存在
        File dirFile = new File(absolutePath).getParentFile();
        if (!dirFile.exists()) {
            dirFile.mkdirs();
        }

        // 保存文件
        file.transferTo(new File(absolutePath));
        return JsonResult.ok(relativePath);
    }
    @PostMapping("remove")
    public JsonResult remove(String imgUrl){
        log.debug("删除图片imgUrl={}",imgUrl);
        new File(PROJECT_ROOT_DIR+"/"+ BASE_UPLOAD_PATH+"/"+imgUrl).delete();
        return JsonResult.ok();
    }
}
